﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Helena.Models;

namespace Helena.Areas.Vendedores.Models
{
    public class LogicaVendedor : InterfazLogicaVendedor
    {
        DBContext Vendedor_contexto = new DBContext();
        DBGenericQueriesUtil<Vendedor> Tabla;

        public DBContext context_publico { get { return Vendedor_contexto; } }

        #region Comun
        
        public LogicaVendedor()
        {
            Tabla = new DBGenericQueriesUtil<Vendedor>(Vendedor_contexto, Vendedor_contexto.t_Vendedor);
        }
        
        public void i_AgregarVendedor(VendedorView vendedor)
        {
            Tabla.agregarElemento(vendedor.deserializa(this));
        }

        public void i_ModificarVendedor(VendedorView vendedor)
        {
            Vendedor v = vendedor.deserializa(this);
            Tabla.modificarElemento(v, v.ID);
        }

        public void i_EliminarFisicoVendedor(int id)
        {
            Tabla.eliminarElemento(id);
        }

        public void i_EliminarLogicoVendedor(int id)
        {
            Tabla.eliminarElemento_logico(id);
        }

        public List<VendedorView> i_RetornarVendedores()
        {
            List<Vendedor> v = Tabla.retornarTodos();
            List<VendedorView> v_v = new List<VendedorView>();

            foreach (Vendedor vendedor in v)
                if (vendedor.Estado)
                {
                    v_v.Add(new VendedorView(vendedor));
                }
            return v_v;
        }

        public VendedorView i_RetornarVendedro(int id)
        {
            Vendedor v = Tabla.retornarUnSoloElemento(id);
            VendedorView v_v = new VendedorView(v);
            return v_v;
        }

        #endregion

        #region Extras
        public void Entro(int id) 
        {
            Vendedor v = Tabla.retornarUnSoloElemento(id);
            v.Activo = true;
            Tabla.modificarElemento(v, v.ID);
        }

        public void Salio()
        {
            List<Vendedor> todos = Tabla.retornarTodos();
            List<Vendedor> v = Tabla.retornarTodos();
            foreach (var s in v)
            {
                s.Activo = false;
                Tabla.modificarElemento(s, s.ID);
            }            
            
        }

        public string cabecera() 
        {
            string salida;
            Vendedor v = Tabla.retornarUnSoloElemento(VendedorActivo().ID);
            salida = v.NombreLargo;
            return salida;
        }

        public VendedorView VendedorActivo()
        {

            try
            {
               return new VendedorView (Tabla.retornarTodos().Where(a => a.Activo == true).FirstOrDefault());
            }
            catch
            {
                return new VendedorView(Tabla.retornarUnSoloElemento(1));

            }
                        
        }
        
        #endregion
    }
}